home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 44
/
Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso
/
Aminet
/
game
/
wb
/
Piggy.lha
/
Piggy
next >
Wrap
Text File
|
2001-05-14
|
14KB
|
382 lines
/****************************************************************************/
/* Piggy Version 1.01 By Kevin R. Sherman */
/* */
/* Corrected problem with computer roll routine. Would not quit when it had */
/* computer would not quit when it had won the game. */
/* */
/****************************************************************************/
IF ~SHOW(l,'rexxsupport.library') THEN CALL ADDLIB('rexxsupport.library',0,-30,0)
CALL OPEN(OUT,'con:20/20/640/165/Piggy rexx by Kevin R. Sherman/nosize/plain',W)
esc = x2c('1B')
cls = x2c(1B63)
LF = '0A'x
quote.1 = "Come on, baby needs a new pair of shoes!"
quote.2 = "And the dice say....."
quote.3 = "One more time with fealing."
quote.4 = "Hay, are these dice loaded!?!?!"
quote.5 = "Ooooohhhhhh, I'm HOT tonight!"
quote.6 = "Come on baby give be those boxcars!"
quote.7 = "Gotta be cool now, gotta take care...."
quote.8 = "Think positive thoughts. The dice are my friend. The dice are my..."
quote.9 = "And there coming out of there shoot...."
quote.10 = "Look out there hot stuff coming through...."
quote.11 = "Please GOD give me a good roll and I'll never ask for anything again."
quote.12 = "Rattle, rattle, rattle and the dice say...."
quote.13 = "You sure your not cheating?"
quote.14 = "Come on, come on... Looking for that hot streak!"
quote.15 = "Like shooting fish in a pond."
quote.16 = "Oooh, maybe I should't roll this time."
quote.17 = "Fealing lucky punk? Well do you?!"
quote.18 = "Is it hot in here or is it just the dice?"
quote.19 = "What were the rules again?"
quote.20 = "OK, just one more time."
MAIN:
CALL HEADER
CALL START
CALL FINISHED
FINISHED:
CALL CLOSE(OUT)
EXIT
START:
CALL WRITECH(OUT,"Continue, quit, or help? Enter=C/h/q: "esc'[J')
CALL CLEARLN
SELECT
WHEN answer = "C" | answer = "" THEN
DO
COMPUTERTOTAL = 0
USERTOTAL = 0
RANDOM(,, TIME(s))
beginer = RANDOM(1,2)
IF beginer = 1 THEN firstplayer = COMPUTER
ELSE firstplayer = USER
CALL WRITELN(OUT,"The" firstplayer "will go first this time.")
CALL DELAY(200)
player = firstplayer
DO FOREVER
IF player = "COMPUTER" THEN CALL computerroll
IF player = "USER" THEN CALL userroll
END
END
WHEN answer = "H" THEN
DO
CALL SHOW_HELP
CALL MAIN
END
WHEN answer = "Q" THEN CALL FINISHED
OTHERWISE
DO
CALL WRITECH(OUT,esc'[1A')
CALL START
END
END
RETURN
GAME_TOTAL:
CALL WRITELN(OUT,cls)
CALL WRITELN(OUT,"Game Totals: Computer:" COMPUTERTOTAL " You:" USERTOTAL " First player was" firstplayer||LF)
RETURN
HEADER:
CALL WRITELN(OUT,cls)
CALL WRITELN(OUT," Introducing")
CALL WRITELN(OUT," PIGGY Version 1.01"LF)
CALL WRITELN(OUT," by Kevin R. Sherman"LF)
CALL WRITELN(OUT," Original game & concept")
CALL WRITELN(OUT," by Basil Barnes"LF)
CALL WRITELN(OUT," A very adictive game of dice."COPIES(LF,2))
RETURN
CLEARLN:
DO TypeAhead = 0 to LINES(OUT) - 1
Junk = READLN(OUT)
END
answer = UPPER(READCH(OUT,1))
IF C2X(answer) = '0A' THEN answer = ''
RETURN
COMPUTERROLL:
IF USERTOTAL >= 150 & firstplayer = "COMPUTER" THEN CALL GAME_END
IF COMPUTERTOTAL >= 150 & firstplayer = "USER" THEN CALL GAME_END
RollTotal = 0
DO RollNum = 1 TO RANDOM(2,10)
IF USERTOTAL < 150 THEN
DO
CALL SHOW_DICE
SELECT
WHEN roll = 2 THEN
DO
CALL WRITELN(OUT,"Drat!! I rolled snake eyes I start back at 0")
COMPUTERTOTAL = 0
player = user
CALL DELAY(200)
RETURN
END
WHEN dice.1 = 1 | dice.2 = 1 THEN
DO
CALL WRITELN(OUT,"I rolled a one. My turn is over.")
player = user
CALL DELAY(200)
RETURN
END
WHEN COMPUTERTOTAL + rolltotal > 150 & firstplayer = "USER" THEN
DO
COMPUTERTOTAL = COMPUTERTOTAL + rolltotal
CALL DELAY(200)
CALL GAME_END
END
OTHERWISE CALL DELAY(100)
END
END
ELSE
DO RollNum = 1
CALL SHOW_DICE
SELECT
WHEN roll = 2 THEN
DO
COMPUTERTOTAL = 0
CALL WRITELN(OUT,"Ahhhh!! I rolled snake eyes!! I lost big time. You lucky stiff.")
CALL DELAY(100)
CALL GAME_END
END
WHEN dice.1 = 1 | dice.2 = 1 THEN
DO
CALL WRITELN(OUT,"Not Now! Not a ONE! Ahhhhh. You beat me.")
CALL DELAY(100)
CALL GAME_END
END
WHEN COMPUTERTOTAL + rolltotal > USERTOTAL THEN
DO
COMPUTERTOTAL = COMPUTERTOTAL + rolltotal
CALL WRITELN(OUT,"Hehehehe. Your not piggy enough, I won!")
CALL DELAY(100)
CALL GAME_END
END
OTHERWISE CALL DELAY(100)
END
END
END
COMPUTERTOTAL = rolltotal + COMPUTERTOTAL
IF COMPUTERTOTAL >= 150 THEN
DO
CALL WRITELN(OUT,"OK, it's do or die time for you now!")
player = user
CALL DELAY(200)
RETURN
END
CALL WRITELN(OUT,"That's it for me this time.")
player = user
CALL DELAY(200)
RETURN
USERROLL:
RollTotal = 0
CALL GAME_TOTAL
CALL WRITECH(OUT,"Would you like to roll the dice? Enter=Y/n/q: ")
DO RollNum = 1
CALL CLEARLN
SELECT
WHEN answer = "N" THEN
DO
USERTOTAL = rolltotal + USERTOTAL
SELECT
WHEN USERTOTAL >= 150 & firstplayer = "COMPUTER" THEN CALL GAME_END
WHEN COMPUTERTOTAL >= 150 THEN
DO
IF COMPUTERTOTAL > USERTOTAL THEN CALL WRITELN(OUT,"Giving up are you? Good choice, sucker.")
CALL DELAY(200)
CALL GAME_END
END
WHEN USERTOTAL >= 150 THEN CALL WRITELN(OUT,"YIPES! It's do or die time now!")
OTHERWISE NOP
END
player = computer
CALL DELAY(200)
RETURN
END
WHEN answer = "Q" THEN
DO
CALL WRITELN(OUT,"Chicken, try and play again when you have more guts.")
CALL DELAY(300)
CALL FINISHED
END
WHEN answer = "Y" | answer = "" | C2X(answer) = '0A' THEN
DO
CALL SHOW_DICE
SELECT
WHEN roll = 2 THEN
DO
CALL WRITELN(OUT,"Tough break, you rolled snake eyes you start back at 0")
USERTOTAL = 0
IF COMPUTERTOTAL > 150 THEN
DO
CALL WRITELN(OUT,"Hehehehe, that roll couldn't have come at a worse time.")
CALL WRITELN(OUT,"Man I beat you bad! You shouldn't have been so PIGGY.")
CALL DELAY(200)
CALL GAME_END
END
player = computer
CALL DELAY(200)
RETURN
END
WHEN dice.1 = 1 | dice.2 = 1 THEN
DO
IF COMPUTERTOTAL > 150 THEN
DO
CALL WRITELN(OUT,"Aaawwww, such bad luck. Well that is what you get for being so PIGGY.")
CALL DELAY(200)
CALL GAME_END
END
CALL WRITELN(OUT,"You rolled a one, my turn now.")
player = computer
CALL DELAY(200)
RETURN
END
OTHERWISE NOP
END
END
WHEN RollNum < 2 THEN
DO
CALL WRITECH(OUT,esc'[1AWould you like to roll the dice? Enter=Y/n/q: 'esc'[J')
RollNum = 0
ITERATE RollNum
END
OTHERWISE
DO
CALL WRITECH(OUT,esc'[1AWant to roll again? Enter=Y/n/q: 'esc'[J')
RollNum = RollNum - 1
ITERATE RollNum
END
END
CALL WRITECH(OUT,"Want to roll again? Enter=Y/n/q: ")
END
RETURN
SHOW_DICE:
CALL RANDOM(,, TIME(s))
dice.1 = RANDOM(1, 6)
dice.2 = RANDOM(1, 6)
roll = dice.1 + dice.2
rolltotal = roll + rolltotal
CALL GAME_TOTAL
RANDOM(,, TIME(s))
q = RANDOM(1,20)
CALL WRITELN(OUT,quote.q||LF)
dicepos1 = random(1,40,time(s))
dicepos2 = random(dicepos1 + 7,75,time(s))
CALL WRITELN(OUT,esc"[6;"dicepos1"H"esc"[42m "esc"[6;"dicepos2"H ")
CALL WRITELN(OUT,esc"[7;"dicepos1"H"esc"[42m "esc"[7;"dicepos2"H ")
CALL WRITELN(OUT,esc"[8;"dicepos1"H"esc"[42m "esc"[8;"dicepos2"H ")
SELECT
WHEN dice.1 = 1 THEN CALL WRITELN(OUT,esc"[7;"dicepos1 + 2"H*")
WHEN dice.1 = 2 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos1"H*")
CALL WRITELN(OUT,esc"[8;"dicepos1 + 4"H*")
END
WHEN dice.1 = 3 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos1"H*")
CALL WRITELN(OUT,esc"[7;"dicepos1 + 2"H*")
CALL WRITELN(OUT,esc"[8;"dicepos1 + 4"H*")
END
WHEN dice.1 = 4 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos1"H*"esc"[6;"dicepos1 + 4"H*")
CALL WRITELN(OUT,esc"[8;"dicepos1"H*"esc"[8;"dicepos1 + 4"H*")
END
WHEN dice.1 = 5 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos1"H*"esc"[6;"dicepos1 + 4"H*")
CALL WRITELN(OUT,esc"[7;"dicepos1 + 2"H*")
CALL WRITELN(OUT,esc"[8;"dicepos1"H*"esc"[8;"dicepos1 + 4"H*")
END
WHEN dice.1 = 6 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos1"H*"esc"[6;"dicepos1 + 4"H*")
CALL WRITELN(OUT,esc"[7;"dicepos1"H*"esc"[7;"dicepos1 + 4"H*")
CALL WRITELN(OUT,esc"[8;"dicepos1"H*"esc"[8;"dicepos1 + 4"H*")
END
END
SELECT
WHEN dice.2 = 1 THEN CALL WRITELN(OUT,esc"[7;"dicepos2 + 2"H*")
WHEN dice.2 = 2 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos2"H*")
CALL WRITELN(OUT,esc"[8;"dicepos2 + 4"H*")
END
WHEN dice.2 = 3 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos2"H*")
CALL WRITELN(OUT,esc"[7;"dicepos2 + 2"H*")
CALL WRITELN(OUT,esc"[8;"dicepos2 + 4"H*")
END
WHEN dice.2 = 4 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos2"H*"esc"[6;"dicepos2 + 4"H*")
CALL WRITELN(OUT,esc"[8;"dicepos2"H*"esc"[8;"dicepos2 + 4"H*")
END
WHEN dice.2 = 5 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos2"H*"esc"[6;"dicepos2 + 4"H*")
CALL WRITELN(OUT,esc"[7;"dicepos2 + 2"H*")
CALL WRITELN(OUT,esc"[8;"dicepos2"H*"esc"[8;"dicepos2 + 4"H*")
END
WHEN dice.2 = 6 THEN
DO
CALL WRITELN(OUT,esc"[6;"dicepos2"H*"esc"[6;"dicepos2 + 4"H*")
CALL WRITELN(OUT,esc"[7;"dicepos2"H*"esc"[7;"dicepos2 + 4"H*")
CALL WRITELN(OUT,esc"[8;"dicepos2"H*"esc"[8;"dicepos2 + 4"H*")
END
END
CALL WRITELN(OUT,esc"[0m")
IF dice.1 = 1 | dice.2 = 1 THEN rolltotal = 0
IF Player = "COMPUTER" THEN
CALL WRITELN(OUT,esc"[10;1HOn roll number" RollNum "the dice came up as:" dice.1 'AND' dice.2 "Current total:" COMPUTERTOTAL + rolltotal)
ELSE
CALL WRITELN(OUT,esc"[10;1HOn roll number" RollNum "the dice came up as:" dice.1 'AND' dice.2 "Current total:" USERTOTAL + rolltotal)
RETURN
GAME_END:
CALL GAME_TOTAL
CALL WRITELN(OUT," We have a winner... and the winner is...."LF)
CALL DELAY(100)
IF COMPUTERTOTAL > USERTOTAL THEN
DO
CALL WRITELN(OUT," THE COMPUTER!!!!")
CALL WRITELN(OUT,"Better luck next time.")
END
ELSE
DO
CALL WRITELN(OUT," YOU!!!!")
CALL WRITELN(OUT," Job well done.")
END
CALL WRITECH(OUT,COPIES(LF,2)'Want to play again? Enter=Y: 'esc'[J')
CALL CLEARLN
IF answer = 'Y' | answer = '' THEN CALL MAIN
CALL FINISHED
RETURN
SHOW_HELP:
CALL WRITELN(OUT,cls)
CALL WRITELN(OUT,"The object of the game is to have the highest points at the end of the game.")
CALL WRITELN(OUT,"The game is played to 150 points. Selection of first player is random.")
CALL WRITELN(OUT,"However the second player always has the last roll."LF)
CALL WRITELN(OUT,"Points are accumulated by adding the players current roll total to their")
CALL WRITELN(OUT,"accumulated total. During play if a one is rolled on EITHER dice then that")
CALL WRITELN(OUT,"player loses their turn and all points that were accumulated during that")
CALL WRITELN(OUT,"turn. If BOTH dice are one then the player not only loses their turn and")
CALL WRITELN(OUT,"all accumulated points in that turn, but also loses their total accumulated")
CALL WRITELN(OUT,"points. (If you roll snake eyes you start over.)"LF)
CALL WRITELN(OUT,"Once a player has reached 150 points or more and stops rolling the winner")
CALL WRITELN(OUT,"will be determined after the second player finishes their roll. If quitting")
CALL WRITELN(OUT,"player was the second player then a winner is immediately determined.")
CALL WRITELN(OUT,"Otherwise the second player has one more roll then a winner is determined.")
CALL WRITELN(OUT,"If you quit the game before you reach 150 you forfeit."LF)
CALL WRITECH(OUT,"Enter to continue.")
CALL CLEARLN
RETURN